100 CALL CLEAR :: B$="BONUS  " :: C$="PUNTI    " :: D$=" LA SAGA CONTINUA" :: T$="MASS.PUNT."
110 DIM HF$(5),OR$(12),LL$(3),LV(3,3),KY$(3),J(1),KE(4) :: QK$="ALZQP2" :: AB=91 :: NI$="$1984 INTRIGUE SOFTWARE"
120 RESTORE 1970 :: FOR F=1 TO 4 :: READ Q$,Q :: NEXT F :: CALL CHAR(136,Q$) :: FOR F=1 TO 5 :: HF$(F)="MDW 999" :: NEXT F :: CALL COLOR(0,2,2) :: RESTORE 1790 :: FOR F=1 TO 18 :: READ Q,Q$ :: CALL CHAR(Q,Q$) :: NEXT F
130 GOSUB 1560 :: LF=23 :: SC=0
140 KT,KL=0 :: T=1 :: XI=57 :: KTS=1 :: V=1 :: Y2=128 :: J(1)=12 :: J(0)=10
150 CALL MAGNIFY(3) :: CALL DELSPRITE(ALL) :: CALL COLOR(2,3,2) :: GH=J(INT((1-0+1)*RND)+0)
160 LV(1,1)=121 :: LV(2,1)=73 :: LV(3,1)=25 :: LV(1,2)=121 :: LV(2,2)=121 :: LV(3,2)=73 :: LV(1,3)=1 :: LV(2,3)=1 :: LV(3,3)=2
170 RESTORE 1930 :: FOR F=1 TO 12 :: READ OR$(F) :: NEXT F :: RESTORE 1940 :: FOR F=1 TO 4 :: READ KE(F) :: NEXT F :: RANDOMIZE :: CM=INT(3*RND)+1
180 CALL DELSPRITE(ALL) :: CALL CLEAR :: CALL SCREEN(3) :: CALL VCHAR(1,1,47,72) :: CALL VCHAR(1,30,47,72) :: CALL HCHAR(20,1,47,32)
190 CALL COLOR(12,11,2,1,14,2) :: XI=25 :: FOR F=21 TO LF-1 :: CALL SPRITE(#F,124,12,170,XI) :: XI=XI+16 :: NEXT F
200 DISPLAY AT(21,10)SIZE(18):C$;SC :: DISPLAY AT(23,10)SIZE(18):T$&SEG$(HF$(1),4,7)
210 ON T GOSUB 1200,1230,1260,1290,1320,1350,1380,1410,1440,1470,1500,1530
220 U=33 :: FOR F=6 TO 18 STEP 6 :: CALL HCHAR(F,4,U,26) :: FOR G=F-3 TO F-1 :: CALL HCHAR(G,4,46,26) :: NEXT G :: U=U+1 :: NEXT F
230 READ E :: FOR F=1 TO E :: READ U,X,Y,RP :: IF U<>1 THEN 250
240 FOR G=X-3 TO X :: CALL HCHAR(G,Y,32,RP) :: NEXT G
250 IF U<>2 THEN 270
260 CALL VCHAR(X,Y,37,RP) :: IF X=1 THEN 270 :: CALL VCHAR(X-2,Y,46,2)
270 NEXT F
280 CALL SPRITE(#1,124,12,LV(V,1),Y2)
290 READ L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,EX$
300 XS=3 :: FOR F=1 TO 3 :: IF SEG$(OR$(T),F,1)="*" THEN 320 ELSE READ XA,YA,LL$(F) :: CALL SPRITE(#XS,60,ASC(SEG$(OR$(T),F,1))-60,XA,YA)
310 XS=XS+1
320 NEXT F
330 IF KT<>2 THEN 340 ELSE CALL SPRITE(#5,140,3,168,208) :: GOTO 350
340 READ X6,Y6 :: IF T<>CM THEN 350 :: CALL SPRITE(#5,140,3,X6,Y6)
350 IF T<>12 THEN 360 ELSE IF GH<>12 THEN 360 :: YU=5 :: XU=13 :: XD=121 :: GOTO 380
360 IF T<>10 THEN G1=1 :: GOTO 440 ELSE IF GH<>10 THEN G1=1 :: GOTO 440
370 YU=23 :: XU=7 :: XD=72
380 CALL CHAR(40,RPT$("80",8)) :: CALL CHAR(132,"03050B1A0301031E1316170F06283000C060D0D8C081C2FCC0E0F0E0C0281800")
390 CALL CHAR(128,"03060B132381433F030707070E04041CC0A0D048C480C078C868E8F0C040406")
400 IF KTS>=8 THEN 420
410 FOR F=XU TO XU+4 :: CALL HCHAR(F,YU,40,6) :: NEXT F
420 CALL SPRITE(#10,131,10,XD,(YU+1)*8) :: SD=128 :: G1=0
430 G1=0
440 IF KTS>3 THEN OP=INT((4-1+1)*RND)+1 ELSE OP=KTS
450 RESTORE 1970 :: FOR F=1 TO OP :: READ Q$,VU :: NEXT F :: CALL CHAR(136,Q$)
460 CO=INT((14-3+1)*RND)+3 :: IF VU<>10 THEN 480
470 XT=LV(2*RND+1,1) :: YT=200*RND+20 :: CALL SPRITE(#6,136,CO,XT,YT) :: GOTO 490
480 FOR F=1 TO 3 :: CALL SPRITE(#5+F,136,INT((14-3+1)*RND)+3,LV(F,1),80,0,INT(((8--8+1)*RND)+-8)+1) :: NEXT F
490 FOR F=1 TO 12 STEP 4
500 CALL COINC(#1,#5+V,9,U) :: IF U=-1 THEN 1010
510 IF G1=1 THEN 520 :: SD=SD+4 :: CALL PATTERN(#10,SD) :: IF SD=132 THEN SD=124
520 CALL KEY(0,X1,L) :: IF L=0 THEN CALL MOTION(#1,0,0) :: IR=0 :: GOTO 500
530 ON POS(QK$,CHR$(X1),1)+1 GOTO 540,560,760,640,840,870,900
540 CALL MOTION(#1,0,0) :: CALL PATTERN(#1,124) :: IR=0
550 NEXT F :: GOTO 490
560 CALL PATTERN(#1,AB+2) :: FOR S=8000 TO 10000 STEP 1000 :: CALL SOUND(-160,S,4,S/2,5) :: CALL POSITION(#1,X2,Y2) :: CALL MOTION(#1,-8,IR)
570 IF Y2<25 OR Y2>220 AND IR<>0 THEN IR=0 ELSE CALL COINC(#1,#5+V,9,U) :: IF U=-1 THEN 1010 ELSE CALL COINC(#1,#5,9,U) :: IF U=-1 THEN GOSUB 1170
580 NEXT S
590 SS=S :: CALL PATTERN(#1,AB+6) :: CALL MOTION(#1,5,IR) :: FOR S=10000 TO 8000 STEP-1000
600 CALL SOUND(-260,S,4,S/2,5) :: CALL POSITION(#1,X2,Y2) :: IF Y2<30 OR Y2>225 THEN CALL MOTION(#1,5,0)
610 CALL COINC(#1,#5,3,U) :: IF U=-1 THEN GOSUB 1170 ELSE CALL COINC(#1,#5+V,9,U) :: IF U=-1 THEN 1010
620 NEXT S :: CALL MOTION(#1,0,0) :: CALL POSITION(#1,X2,Y2) :: CALL LOCATE(#1,LV(V,1),Y2) :: CALL GCHAR(LV(V,1)/7,Y2/7.3,U)
630 IF U=32 THEN 940 ELSE IR=0 :: GOTO 540
640 CALL COINC(#1,#5+V,9,U) :: IF U=-1 THEN 1040
650 SO=0 :: CALL COINC(#1,L1,L2,2,U) :: IF U=-1 THEN EX=L3 :: CA=L5 :: LE=L4 :: GOTO 680
660 CALL COINC(#1,L6,L7,2,U) :: IF U=-1 THEN EX=L8 :: LE=L9 :: CA=L10 :: GOTO 680
670 GOTO 540
680 CALL POSITION(#1,X2,Y2) :: FOR G=116 TO 120 STEP 4 :: CALL PATTERN(#1,G) :: CALL MOTION(#1,-6,0) :: SC=SC+20
690 DISPLAY AT(21,10)SIZE(18):C$;SC
700 CALL KEY(0,X1,L) :: IF L=0 THEN CALL MOTION(#1,0,0) :: GOTO 700
710 CALL COINC(#1,EX,Y2,5,U) :: IF U=-1 THEN 740
720 CALL COINC(#1,#5+V,9,U) :: IF U=-1 THEN 1010
730 NEXT G :: GOTO 680
740 CALL MOTION(#1,0,0) :: CALL LOCATE(#1,LV(LE,1),Y2) :: V=LE :: IF T<>CA THEN T=CA :: GOTO 180
750 GOTO 540
760 FOR S=3 TO 6 :: CALL COINC(#1,#S,2,U) :: IF U=-1 THEN 780
770 NEXT S :: GOTO 540
780 SS$=SEG$(OR$(T),V,1) :: IF SS$="C" THEN 540
790 IF SS$<>"?" AND KT<>2 THEN 540 ELSE TT=T :: VV=V :: T=ASC(SEG$(LL$(V),1,1))-95 :: V=ASC(SEG$(LL$(V),2,1))-95
800 BO=INT((5-1+1)*RND)+1*100 :: SC=SC+BO :: IF SS$="?" THEN 180
810 FOR P=1 TO 3 :: KY$(P)=SEG$(OR$(TT),P,1) :: NEXT P
820 KY$(VV)="?" :: OR$(TT)="" :: FOR P=1 TO 3 :: OR$(TT)=OR$(TT)&KY$(P) :: NEXT P :: KT=0 :: IF KTS>=5 THEN 830 :: RANDOMIZE :: CM=INT((KE(KTS)-1+1)*RND)+1 :: GOTO 180
830 RANDOMIZE :: CM=INT((12-1+1)*RND)-1 :: KT=0 :: GOTO 180
840 CALL POSITION(#1,X2,Y2) :: IF Y2<30 THEN 990 ELSE CALL GCHAR(LV(V,1)/6.8,Y2/7.2,U) :: IF U=32 THEN 940 :: IR=-6 :: AB=91 :: CALL PATTERN(#1,AB+F)
850 CALL COINC(#1,#6,13,U) :: IF U=-1 THEN 1010
860 CALL MOTION(#1,0,-6) :: GOTO 550
870 CALL POSITION(#1,X2,Y2) :: IF Y2>220 THEN 1000 :: CALL GCHAR(LV(V,1)/6.8,Y2/7.2,U) :: IF U=32 THEN 940 :: IR=6 :: AB=104 :: CALL PATTERN(#1,AB+F)
880 CALL COINC(#1,#6,13,U) :: IF U=-1 THEN 1010
890 CALL MOTION(#1,0,6) :: GOTO 550
900 IF KTS<3 THEN 540 :: CALL DISTANCE(#1,#10,DI) :: IF SQR(DI)>20 THEN 540 :: CALL DELSPRITE(ALL)
910 CALL CLEAR :: CALL SCREEN(2) :: CALL MAGNIFY(4) :: CALL SPRITE(#1,128,12,96,96,#10,124,14,96,128)
920 DISPLAY AT(20,6):"LIONEL MIO EROE!" :: DISPLAY AT(22,7):"YOU RESCUED ME" :: FOR F=1 TO 400 :: NEXT F :: CALL CLEAR
930 DISPLAY AT(20,6):D$ :: FOR F=1 TO 300 :: NEXT F :: IF LF>=24 THEN 140 ELSE LF=LF+1 :: GOTO 140
940 CALL POSITION(#1,X2,Y2) :: CALL MOTION(#1,6,0) :: FOR S=900 TO 110 STEP-20 :: CALL SOUND(-160,S,8) :: CALL COINC(#1,LV(V,2),Y2,3,U)
950 IF U<>-1 THEN 980
960 CALL MOTION(#1,0,0) :: CALL LOCATE(#1,LV(V,2),Y2) :: IF V<>1 THEN V=V-1
970 CALL GCHAR(LV(V,1)/6.8,Y2/7.4,U) :: IF U<>32 OR U=37 THEN 1160 :: CALL MOTION(#1,6,0)
980 NEXT S
990 T=ASC(SEG$(EX$,1,1))-95 :: CALL DELSPRITE(ALL) :: Y2=225 :: GOTO 180
1000 T=ASC(SEG$(EX$,2,2))-95 :: CALL DELSPRITE(ALL) :: Y2=24 :: GOTO 180
1010 CALL MOTION(#1,0,0) :: IF VU=0 THEN 1040 ELSE CALL DELSPRITE(#6) :: CALL DELSPRITE(#5+V) :: BO=(INT((5-1+1)*RND)+1)*100
1020 GOSUB 1180
1030 CALL POSITION(#1,X1,Y1) :: CALL GCHAR(X1/7,Y1/7.4,U) :: IF U=32 THEN 940 ELSE 540
1040 IF LF=21 THEN 1070 ELSE CALL DELSPRITE(ALL) :: LF=LF-1 :: KL=KL+16 :: XI=9+KL :: Y2=128
1050 CALL CLEAR :: CALL SCREEN(2) :: DISPLAY AT(10,6):D$
1060 V=1 :: GOSUB 2010 :: GOTO 180
1070 DISPLAY AT(10,8)SIZE(16):"LA SAGA FINISCE" :: GOSUB 2010
1080 CALL DELSPRITE(ALL) :: CALL CLEAR :: FOR F=5 TO 1 STEP-1 :: IF VAL(SEG$(HF$(F),4,7))>SC THEN 1100
1090 NEXT F
1100 IF F=5 THEN 130 ELSE EG=F+1 :: GOSUB 1140 :: GOSUB 1700 :: DISPLAY AT((EG+3)*2,11):"   ";SC :: ACCEPT AT((EG+3)*2,11)SIZE(3)BEEP:N$
1110 S$=N$&" "&STR$(SC) :: FOR F=EG TO 5 :: S2$=S$ :: S$=HF$(F) :: HF$(F)=S2$ :: NEXT F :: GOSUB 1700 :: FOR F=1 TO 1000 :: CALL KEY(0,X1,L)
1120 IF L<>0 THEN 130
1130 NEXT F :: GOTO 100
1140 CALL CHAR(40,"0101010101050C1F0F00010101050D0DB0B0A080808000F0F830A08080808080") :: CALL MAGNIFY(4)
1150 CALL SPRITE(#1,40,12,30,25,0,0,#2,40,12,30,205,0,0,#3,40,12,145,25,0,0,#4,40,12,145,205) :: RETURN
1160 IF S<=300 THEN 1040 ELSE 540
1170 CALL MOTION(#1,0,0) :: KT=2 :: KTS=KTS+1 :: CALL LOCATE(#5,169,215) :: BO=T*(V*10)*10
1180 DISPLAY AT(1,11)SIZE(15)BEEP:B$;BO :: SC=SC+BO :: DISPLAY AT(21,10)SIZE(18):C$;SC :: FOR P=1 TO 200 :: NEXT P
1190 DISPLAY AT(1,11)SIZE(15):RPT$(" ",11) :: RETURN
1200 DATA 6,1,6,4,7,1,12,11,3,1,12,17,3,1,12,23,3,2,12,11,6,2,18,22,2,121,78,80,2,1,1,1,1,0,0
1210 DATA ab,25,200,cb,3,76
1220 RESTORE 1200 :: RETURN
1230 RESTORE 1240 :: RETURN
1240 DATA 5,1,6,10,3,1,6,14,15,1,12,11,3,1,12,16,3,2,6,10,6,73,68,32,3,2,1,1,1,0,0
1250 DATA b`,25,55,ga,3,92
1260 RESTORE 1270 :: RETURN
1270 DATA 6,1,6,16,4,1,12,9,3,1,12,15,3,1,12,24,3,1,12,19,3,2,6,16,12,121,116,32,3,3,1,1,1,0,0
1280 DATA `a,25,200,hb,50,208
1290 RESTORE 1300 :: RETURN
1300 DATA 6,1,6,10,2,1,6,14,3,1,6,19,2,1,12,10,12,2,1,22,5,2,12,10,6,25,164,3,1,1,121,68,80,2,4
1310 DATA de,25,200,x,50,160
1320 RESTORE 1330 :: RETURN
1330 DATA 4,1,6,7,20,1,12,4,20,2,6,7,12,2,18,22,2,121,44,32,3,5,1,1,1,0,0
1340 DATA ec,73,200,jb,3,200
1350 RESTORE 1360 :: RETURN
1360 DATA 3,1,6,9,2,1,12,20,3,2,6,12,6,73,84,32,3,6,1,1,1,0,0
1370 DATA cd,121,55,x,25,40,e`,53,56
1380 RESTORE 1390 :: RETURN
1390 DATA 5,1,12,15,3,1,12,20,2,1,12,23,6,2,6,14,6,2,18,22,2,73,100,32,3,7,1,1,1,0,0
1400 DATA gh,25,55,ia,60,164
1410 RESTORE 1420 :: RETURN
1420 DATA 3,1,6,10,12,2,1,22,5,2,6,10,6,73,68,32,3,8,25,164,3,1,5
1430 DATA hf,73,55,x,52,182
1440 RESTORE 1450 :: RETURN
1450 DATA 4,1,6,10,12,1,12,16,3,2,6,10,6,2,12,20,6,73,68,32,3,9,121,148,80,2,9
1460 DATA fg,121,200,k`,25,200,x,3,160
1470 RESTORE 1480 :: RETURN
1480 DATA 4,1,6,12,3,1,6,18,2,1,6,24,3,2,1,22,5,25,164,3,1,7,1,1,1,0,0
1490 DATA jk,73,55,x,3,196
1500 RESTORE 1510 :: RETURN
1510 DATA 4,1,6,10,12,1,12,12,8,2,6,22,6,2,12,11,6,73,164,32,3,11,121,76,80,2,11
1520 DATA ki,25,200,x,3,72
1530 RESTORE 1540 :: RETURN
1540 DATA 5,1,6,6,3,1,12,6,3,1,12,12,3,1,12,17,2,2,6,21,6,73,156,32,3,12,1,1,1,0,0
1550 DATA ij,121,200,x,3,32
1560 CALL CLEAR :: CALL SCREEN(2) :: FOR F=1 TO 9 :: CALL COLOR(F,16,2) :: NEXT F
1570 GOSUB 1140
1580 DISPLAY AT(5,10):"LIONEL E LE" :: DISPLAY AT(8,13):"SCALE" :: DISPLAY AT(16,7):"INTRIGUE SOFTWARE" :: DISPLAY AT(18,13):"$1984"
1590 DISPLAY AT(22,9):"PREMI UN TASTO" :: CALL SPRITE(#5,124,11,82,119)
1600 GOSUB 1950
1610 CALL DELSPRITE(#5)
1620 CALL CLEAR :: DISPLAY AT(1,8):"LIONEL E LE SCALE" :: DISPLAY AT(6,8):"SCEGLI L'OPZIONE" :: RESTORE 1670
1630 S=1 :: FOR F=11 TO 15 STEP 2 :: READ S$ :: DISPLAY AT(F,6):S;"  ";S$ :: S=S+1 :: NEXT F
1640 DISPLAY AT(24,4):NI$
1650 GOSUB 1950
1660 ON POS("123",CHR$(X1),1)+1 GOTO 1650,1680,1730,1780
1670 DATA CLASSIFICA :,SCEGLI I TASTI,INIZIA IL GIOCO
1680 GOSUB 1700
1690 GOSUB 1950 :: GOTO 1610
1700 X=1 :: CALL SCREEN(2) :: CALL CLEAR :: DISPLAY AT(1,5):"CLASSIFICA DI LIONEL" :: FOR F=8 TO 16 STEP 2 :: DISPLAY AT(F,8):X;HF$(X)
1710 X=X+1 :: NEXT F
1720 DISPLAY AT(22,7):C$;SC :: DISPLAY AT(24,4):NI$ :: RETURN
1730 CALL CLEAR :: DISPLAY AT(24,3):NI$
1740 DISPLAY AT(1,7):"CONTROLLO TASTI";QK$ :: QK$="" :: RESTORE 1770 :: DISPLAY AT(6,9):"SCEGLI IL TASTO PER"
1750 FOR F=1 TO 10 STEP 2 :: READ K$ :: DISPLAY AT(F+7,9):K$
1760 ACCEPT AT(F+7,22)VALIDATE(UALPHA)BEEPSIZE(1):KI$ :: QK$=QK$&KI$ :: NEXT F :: QK$=QK$&"2" :: GOTO 1610
1770 DATA SALTO,ENTRARE PORTA,SALIRE SCALE,MUOVI A SINISTRA,MUOVI A DESTRA
1780 RETURN
1790 DATA 35,FFABD5ABD5ABD5AB,33,DBA55A2418000000,34,FFC3A59999A5C381,36,7E81BDA1A1BD817E,37,81818181FF81818181
1800 DATA 60,0F12325252929292925252323212121FF0484C4A42495D4949424A4C4C4848F8
1810 DATA 47,FFFFFFFFFFFFFFFF
1820 DATA 92,03070207030103070706070303010103C0E0C0C0C080C06060E0E0C080808080
1830 DATA 96,0307020703010307060D0D010306070EC0E0C0C0C080C060E0F0F8C0C06060E0
1840 DATA 100,03070207030103070F1F1B0706161C0CC0E0C0C0C080C06070B8D8C0C0C060E0
1850 DATA 104,03070303030103060607070301010101C0E040E0C080C0E0E060E0C0808080C0
1860 DATA 108,0307030303010306070F1F0303060607C0E040E0C080C0E060B0B080C060E070
1870 DATA 112,03070303030103060E1D1B0303030607C0E040E0C080C0E0F0F8D8E060683830
1880 DATA 116,03071B1B1B191F1F0707030700000000C0E0C0C0C08098F8F8D8C0C0C0C0C0E0
1890 DATA 120,030703030301191F1F1B030303030307C0E0D8D8D898F8F8E0C0C0E000000000
1900 DATA 124,03070103020103070F1F1B030606060EC0E040C0C080C0E0F0F8D8C0C0C0C0E0
1910 DATA 46,0
1920 DATA 140,00000000000000000000000000000000001E12121E2040A08040000000000000
1930 DATA **D,**D,**D,**C,*D*,C*D,**D,*C*,D*C,*C*,**C,C**
1940 DATA 6,6,9,9
1950 FOR G=3 TO 15 :: FOR F=1 TO 4 :: CALL COLOR(#F,G) :: CALL KEY(0,X1,L) :: IF L<>0 THEN RETURN
1960 NEXT F :: NEXT G :: GOTO 1950
1970 DATA 030F1F1B3135313B3F1E1B1C1E3F77C0C0F0F0D88CAC8CDCFC78D83878FCEE03,0
1980 DATA 0106187789010101010101010101010080C0F0FC22000000000000000040C000,0
1990 DATA 000020130F0F1F7F1F1F0F0F13210100008084C8F030B8F8FEF8F0F0C8040000,0
2000 DATA 00060301030D1A163C3E3E341B0D0F0300B0E0C0A0F078F87CFCFC3CF8F0F0C0,10
2010 FOR F=5000 TO 110 STEP-210 :: CALL SOUND(-160,F,10) :: NEXT F :: RETURN
